using System;
using System.Runtime.Serialization;
using System.Collections.Generic;
//using System.Linq;
namespace ActionService.DataTransferObjects
{
    /// <summary>
    /// Order Data Transfer Object.
    /// 
    /// The purpose of the CustomerTransferObject is to facilitate transport of 
    /// customer business data in a serializable format. Business data is kept in 
    /// publicly accessible auto property members. This class has no methods. 
    /// </summary>
    /// <remarks>
    /// Pattern: Data Data Transfer Objects.
    /// 
    /// Data Transfer Objects are objects that transfer data between processes, but without behavior.
    /// </remarks>
    [DataContract(Name = "Order", Namespace = "http://www.yourcompany.com/types/")]
    public class OrderDto
    {
        ///// <summary>
        ///// Unique order identifier.
        ///// The Identity Field Design Pattern. 
        ///// </summary>
        //[DataMember]
        //public int OrderId { get; set; }

        ///// <summary>
        ///// Date the order is placed.
        ///// </summary>
        //[DataMember]
        //public DateTime OrderDate { get; set; }

        ///// <summary>
        ///// Date the order is required for delivery.
        ///// </summary>
        //[DataMember]
        //public DateTime RequiredDate { get; set; }

        ///// <summary>
        ///// Freight or shipping costs for the order.
        ///// </summary>
        //[DataMember]
        //public double Freight { get; set; }

        ///// <summary>
        ///// List of order details (line items) for the order.
        ///// </summary>
        //[DataMember]
        //public OrderDetailDto[] OrderDetails { get; set; }

        ///// <summary>
        ///// Not used yet
        ///// </summary>
        //public CustomerDto Customer { get; set; }

        ///// <summary>
        ///// Version number. Used in optimistic concurrency.
        ///// </summary>
        //[DataMember]
        //public string Version { get; set; }

        /// <summary>
        /// Gets or sets unique identifier for the order.
        /// Enterprise Design Pattern: Identity field pattern.
        /// </summary>
        [DataMember]
        public int OrderId { get; set; }

        /// <summary>
        /// Gets or sets unique identifier for the order.
        /// Enterprise Design Pattern: Identity field pattern.
        /// </summary>
        [DataMember]
        public int CustomerId { get; set; }

        [DataMember]
        public int SupplierId { get; set; }
        /// <summary>
        /// Gets or sets the date at which the order is placed.
        /// </summary>
        [DataMember]
        public DateTime OrderDate { get; set; }

        /// <summary>
        /// Gets or sets the date at which delivery of the order is required.
        /// </summary>
        [DataMember]
        public DateTime RequiredDate { get; set; }

        /// <summary>
        /// Gets or sets the freight (shipping) costs for this order.
        /// </summary>
        [DataMember]
        public decimal Freight { get; set; }

        /// <summary>
        /// Gets or sets the customer associated with the order.
        /// Enterprise Design Pattern: Foreign Key Mapping. Customer is the parent.
        /// </summary>
        [DataMember]
        public List<BusinessObjects.OrderDetail> OrderDetails { get; set; }

        /// <summary>
        /// Gets or sets version. Used in support of optimistic concurrency.
        /// </summary>
        [DataMember]
        public string Version { get; set; }


        /// <summary>
        /// 
        /// </summary>
        [DataMember]
        public int Status { get; set; }
    }
}